


<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->

<!-- Mirrored from www.cyclismo.org/tutorial/matlab/execute.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 15 Jan 2022 04:32:28 GMT -->
<!-- Added by HTTrack --><meta http-equiv="content-type" content="text/html;charset=UTF-8" /><!-- /Added by HTTrack -->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Executable Files &mdash; Matlab Tutorial 3.0 documentation</title>
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
  

  
    <link rel="stylesheet" href="_static/siteColours.css" type="text/css" />
  

  
    <link rel="top" title="Matlab Tutorial 3.0 documentation" href="index.html"/>
        <link rel="next" title="Subroutines" href="subroutine.html"/>
        <link rel="prev" title="Plotting" href="plot.html"/> 

  
  <script src="_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="index.html" class="icon icon-home"> Matlab Tutorial
          

          
          </a>

          
            
            
              <div class="version">
                3.0
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="https://www.cyclismo.org/tutorial/matlab/search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          

<div class="local-toc"><ul>
<li><a class="reference internal" href="#">Executable Files</a></li>
</ul>
</div>
					


<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="vector.html">Introduction to Vectors in Matlab</a></li>
<li class="toctree-l1"><a class="reference internal" href="matrix.html">Introduction to Matrices in Matlab</a></li>
<li class="toctree-l1"><a class="reference internal" href="operations.html">Vector Functions</a></li>
<li class="toctree-l1"><a class="reference internal" href="control.html">Loops</a></li>
<li class="toctree-l1"><a class="reference internal" href="plot.html">Plotting</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Executable Files</a></li>
<li class="toctree-l1"><a class="reference internal" href="subroutine.html">Subroutines</a></li>
<li class="toctree-l1"><a class="reference internal" href="if.html">The If Statement</a></li>
<li class="toctree-l1"><a class="reference internal" href="dataFile.html">Data Files</a></li>
</ul>


<div class="datacampAd">
  <span style="vertical-align:top;color: black;">
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-8301099787686694";
google_ad_width = 120;
google_ad_height = 240;
google_ad_type = "text_image";
google_ad_channel ="6171035172";
google_ad_slot = "4696657180";
google_color_border = "808080";
google_color_bg = "F0ECEC";
google_color_link = "000000";
google_color_url = "666666.html";
google_color_text = "000000";
//--></script>
<script type="text/javascript"
  src="../../../pagead2.googlesyndication.com/pagead/f.txt">
</script>
</center>
</span>
</div>


        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="index.html">Matlab Tutorial</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          





<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="index.html">Docs</a> &raquo;</li>
      
    <li>Executable Files</li>
      <li class="wy-breadcrumbs-aside">
        
          
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="executable-files">
<span id="executablefile"></span><h1>Executable Files<a class="headerlink" href="#executable-files" title="Permalink to this headline">¶</a></h1>
<p id="index-0">In this tutorial we will assume that you know how to create vectors
and matrices, know how to index into them, and know about loops. For
more information on those topics see one of our tutorials on vectors
(<a class="reference internal" href="vector.html#vectors"><span>Introduction to Vectors in Matlab</span></a>), matrices (<a class="reference internal" href="matrix.html#matrices"><span>Introduction to Matrices in Matlab</span></a>), vector operations
(<a class="reference internal" href="operations.html#vectoroperations"><span>Vector Functions</span></a>), loops (<a class="reference internal" href="control.html#loops"><span>Loops</span></a>), or plotting
(<a class="reference internal" href="plot.html#plotting"><span>Plotting</span></a>).</p>
<p>In this tutorial we will introduce the basic operations for creating
executable files. Once you have a general routine in a matlab file, it
allows you to perform more complex operations, and it is easier to
repeat these operations. For example, you might have a set of
instructions to use Euler&#8217;s approximation for a differential equation
(see the tutorial on loops (<a class="reference internal" href="control.html#loops"><span>Loops</span></a>), but you want to be able to
use those instructions for different equations.</p>
<p>As an example, a simple file to approximate the D.E. y&#8217;= 1/y using
Euler&#8217;s method is found. To execute the commands in the file, the step
size and the initial value must be specified. Once done, you can
easily approximate the given D.E. for a wide variey of initial
conditions and step sizes.</p>
<p>First, you will need to create the file. The easiest editor on our
system is to just use the built in matlab editor. It will allow you to
do some very simple file manipulations. The editor is very simple and
easy to start. It is not a very advanced editor, though.</p>
<p>Matlab executable files (called M-files) must have the extension &#8221;.m&#8221;.
In this example a file called <a class="reference download internal" href="_downloads/simpleEuler.m"><code class="xref download docutils literal"><span class="pre">simpleEuler.m</span></code></a> is created. To get Matlab
to execute the commands in the file simply type in &#8220;simpleEuler&#8221;.
Matlab will then search the current directory for the file
&#8220;simpleEuler&#8221;, read the file, and execute the commands in the file. If
matlab cannot find the file you will get an error message:</p>
<div class="highlight-matlab"><div class="highlight"><pre><span class="o">*</span>??? <span class="n">Undefined</span> <span class="k">function</span> <span class="n">or</span> <span class="n">variable</span> <span class="s">&#39;simpleEuler&#39;</span><span class="o">*</span><span class="p">.</span>
</pre></div>
</div>
<p>If this is the case then either you mistyped the name of the program,
the program is misnamed, or the file is located in directory that
matlab does not know about. In the later case you have to let matlab
know which directory to search. The list of directories that is
searched for files is called the &#8220;path.&#8221; For more information on how
to set the path there are two articles at the mathworks site that go
into more detail: <a class="reference external" href="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/path.shtml">text command</a> and <a class="reference external" href="http://www.mathworks.com/help/matlab/matlab_env/ws_pat19.html#matlabenvironment_pathbrowser">graphical</a>.</p>
<p>If you are not familiar with a more advanced editor use matlab&#8217;s built
in editor to create the file. Type in the following command at the
matlab prompt:</p>
<div class="highlight-matlab" id="index-2"><div class="highlight"><pre><span class="o">&gt;&gt;</span> <span class="n">edit</span> <span class="n">simpleEuler</span><span class="p">.</span><span class="n">m</span>
</pre></div>
</div>
<p>Once the editor appears on the screen either type or cut and paste the
necessary <a class="reference download internal" href="_downloads/simpleEuler.m"><code class="xref download docutils literal"><span class="pre">matlab</span> <span class="pre">commands</span></code></a>:</p>
<div class="highlight-matlab"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37</pre></div></td><td class="code"><div class="highlight"><pre> <span class="c">% file: simpleEuler.m</span>
 <span class="c">% This matlab file will find the approximation to</span>
 <span class="c">%</span>
 <span class="c">% dy/dx =  1/y</span>
 <span class="c">% y(0) = starty</span>
 <span class="c">%</span>
 <span class="c">%</span>
 <span class="c">%  To run this file you will first need to specify</span>
 <span class="c">%  the step the following:</span>
 <span class="c">%      h       : the step size</span>
 <span class="c">%      starty  : the initial value</span>
 <span class="c">%</span>
 <span class="c">%  The routine will generate three vectors.  The first</span>
 <span class="c">%  vector is x which is the grid points starting at</span>
 <span class="c">%  x0=0 and have a step size h.</span>
 <span class="c">%</span>
 <span class="c">%  The second vector is an approximation to the specified</span>
 <span class="c">%  D.E.</span>
 <span class="c">%</span>
 <span class="c">%  The third vector is the true solution to the D.E.</span>
 <span class="c">%</span>
 <span class="c">%  If you haven&#39;t guessed, you cna use the percent sign</span>
 <span class="c">%  to add comments.</span>
 <span class="c">%</span>



 <span class="n">x</span> <span class="p">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">h</span><span class="p">:</span><span class="mi">1</span><span class="p">];</span>

 <span class="n">y</span> <span class="p">=</span> <span class="mi">0</span><span class="o">*</span><span class="n">x</span><span class="p">;</span>
 <span class="n">y</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">=</span> <span class="n">starty</span><span class="p">;</span>

 <span class="k">for</span> <span class="nb">i</span><span class="p">=</span><span class="mi">2</span><span class="p">:</span><span class="n">max</span><span class="p">(</span><span class="nb">size</span><span class="p">(</span><span class="n">y</span><span class="p">)),</span>
    <span class="n">y</span><span class="p">(</span><span class="nb">i</span><span class="p">)</span> <span class="p">=</span> <span class="n">y</span><span class="p">(</span><span class="nb">i</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">h</span><span class="o">/</span><span class="n">y</span><span class="p">(</span><span class="nb">i</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
 <span class="k">end</span>

 <span class="n">true</span> <span class="p">=</span> <span class="nb">sqrt</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">x</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
</pre></div>
</td></tr></table></div>
<p>Once the commands are in place, save the file. Go back to your
original window and start up matlab. The file is called up by simply
typing in the base name (in this case <em>simpleEuler</em>).</p>
<div class="highlight-matlab"><div class="highlight"><pre><span class="o">&gt;&gt;</span> <span class="n">simpleEuler</span>
??? <span class="n">Undefined</span> <span class="k">function</span> <span class="n">or</span> <span class="n">variable</span> <span class="n">h</span><span class="p">.</span>

<span class="n">Error</span> <span class="n">in</span> <span class="o">==&gt;</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">black</span><span class="o">/</span><span class="n">math</span><span class="o">/</span><span class="n">mat</span><span class="o">/</span><span class="n">examples</span><span class="o">/</span><span class="n">simpleEuler</span><span class="p">.</span><span class="n">m</span>
<span class="n">On</span> <span class="n">line</span> <span class="mi">28</span>  <span class="o">==&gt;</span> <span class="n">x</span> <span class="p">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">h</span><span class="p">:</span><span class="mi">1</span><span class="p">];</span>
</pre></div>
</div>
<p>If you try to call the file without first defining the variables h and
starty, you will get an error message. You must first specify all of
the variables that are not defined in the file itself.</p>
<div class="highlight-matlab"><div class="highlight"><pre><span class="o">&gt;&gt;</span> <span class="n">h</span> <span class="p">=</span> <span class="mi">1</span><span class="o">/</span><span class="mi">16</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">starty</span> <span class="p">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">simpleEuler</span>
<span class="o">&gt;&gt;</span> <span class="n">whos</span>
  <span class="n">Name</span>         <span class="n">Size</span>                   <span class="n">Bytes</span>  <span class="n">Class</span>

  <span class="n">h</span>            <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="nb">i</span>            <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">starty</span>       <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">true</span>         <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">x</span>            <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">y</span>            <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>

<span class="n">Grand</span> <span class="n">total</span> <span class="n">is</span> <span class="mi">54</span> <span class="n">elements</span> <span class="n">using</span> <span class="mi">432</span> <span class="n">bytes</span>

<span class="o">&gt;&gt;</span> <span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="s">&#39;rx&#39;</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">true</span><span class="p">)</span>
</pre></div>
</div>
<p>Once the necessary variables are defined, and you type in the command
<em>simpleEuler</em>, matlab searched the current directory for a file called
<a class="reference download internal" href="_downloads/simpleEuler.m"><code class="xref download docutils literal"><span class="pre">simpleEuler.m</span></code></a>. Once it found the file, it read the file and executed
the commands as if you had typed them from the keyboard.</p>
<p>If you would like to run the program again with a different step size,
you have to be careful. The program will write over the vectors x,y,
and true. If you want to save these vectors, you must do so
explicitly!</p>
<div class="highlight-matlab"><div class="highlight"><pre><span class="o">&gt;&gt;</span> <span class="n">x0</span> <span class="p">=</span> <span class="n">x</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">y0</span> <span class="p">=</span> <span class="n">y</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">true0</span> <span class="p">=</span> <span class="n">true</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">h</span> <span class="p">=</span> <span class="n">h</span><span class="o">/</span><span class="mi">2</span><span class="p">;</span>
<span class="o">&gt;&gt;</span> <span class="n">simpleEuler</span>
<span class="o">&gt;&gt;</span> <span class="n">whos</span>
  <span class="n">Name</span>         <span class="n">Size</span>                   <span class="n">Bytes</span>  <span class="n">Class</span>

  <span class="n">h</span>            <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="nb">i</span>            <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">starty</span>       <span class="mi">1</span><span class="n">x1</span>                        <span class="mi">8</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">true</span>         <span class="mi">1</span><span class="n">x33</span>                     <span class="mi">264</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">true0</span>        <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">x</span>            <span class="mi">1</span><span class="n">x33</span>                     <span class="mi">264</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">x0</span>           <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">y</span>            <span class="mi">1</span><span class="n">x33</span>                     <span class="mi">264</span>  <span class="n">double</span> <span class="n">array</span>
  <span class="n">y0</span>           <span class="mi">1</span><span class="n">x17</span>                     <span class="mi">136</span>  <span class="n">double</span> <span class="n">array</span>

<span class="n">Grand</span> <span class="n">total</span> <span class="n">is</span> <span class="mi">153</span> <span class="n">elements</span> <span class="n">using</span> <span class="mi">1224</span> <span class="n">bytes</span>

<span class="o">&gt;&gt;</span> <span class="n">plot</span><span class="p">(</span><span class="n">x0</span><span class="p">,</span><span class="nb">abs</span><span class="p">(</span><span class="n">true0</span><span class="o">-</span><span class="n">y0</span><span class="p">),</span><span class="s">&#39;gx&#39;</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="nb">abs</span><span class="p">(</span><span class="n">true</span><span class="o">-</span><span class="n">y</span><span class="p">),</span><span class="s">&#39;yo&#39;</span><span class="p">);</span>
</pre></div>
</div>
<p>Now you have two approximations. The first is with a step size of
1/16, and it is stored in the vectors <em>x0</em> and <em>y0</em>. The second
approximation is for a step size of 1/32 and is found in the vectors
<em>x</em> and <em>y</em>.</p>
</div>


           </div>
          </div>
          



  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="subroutine.html" class="btn btn-neutral float-right" title="Subroutines" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="plot.html" class="btn btn-neutral" title="Plotting" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
		

		<br><br>


<footer>
		<hr/>

		<div role="contentinfo">
          <center>
          <script async src="../../../pagead2.googlesyndication.com/pagead/js/f.txt"></script>
<!-- matlab tutorial wide -->
<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-8301099787686694"
     data-ad-slot="8763269985"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
</center>


			<p>
			<span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Matlab Tutorial</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="mailto:kjblack@gmail.com" property="cc:attributionName" rel="cc:attributionURL">Kelly Black</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">Creative Commons Attribution-NonCommercial 4.0 International License</a> (2015).<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="index-2.html" rel="dct:source">http://www.cyclismo.org/tutorial/matlab/</a>.
            </p>

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org/">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'./',
            VERSION:'3.0',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="_static/jquery.js"></script>
      <script type="text/javascript" src="_static/underscore.js"></script>
      <script type="text/javascript" src="_static/doctools.js"></script>
      <script type="text/javascript" src="../../../cdn.mathjax.org/mathjax/latest/MathJaxdda6.js?config=TeX-AMS-MML_HTMLorMML"></script>

  

  
  
    <script type="text/javascript" src="_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
  
<p>
<a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/"><img alt="Creative Commons License" style="border-width:0" src="../../../licensebuttons.net/l/by-nc/4.0/80x15.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" href="http://purl.org/dc/dcmitype/Text" property="dct:title" rel="dct:type">Matlab Tutorial</span> by <a xmlns:cc="http://creativecommons.org/ns#" href=href%3d_mailto_kjblack%40gmail.html property="cc:attributionName" rel="cc:attributionURL">Kelly Black</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/4.0/">Creative Commons Attribution-NonCommercial 4.0 International License</a>.<br />Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="index-2.html" rel="dct:source">http://www.cyclismo.org/tutorial/matlab/</a>.
</p>
<p>This page generated using <a href="http://sphinx-doc.org/">Sphinx</a>.</p>





</body>

<!-- Mirrored from www.cyclismo.org/tutorial/matlab/execute.html by HTTrack Website Copier/3.x [XR&CO'2014], Sat, 15 Jan 2022 04:32:28 GMT -->
</html>